The communications industry is rapidly changing to adjust to emerging technologies and ever increasing customer demand. This customer demand for new applications and increased performance of existing applications is driving communications network and system providers to employ networks and systems having greater speed and capacity (e.g., greater bandwidth). In trying to achieve these goals, a common approach taken by many communications providers is to use packet switching technology.
As used herein, the term “packet” refers to packets of all types, including, but not limited to, fixed length cells and variable length packets. Moreover, these packets may contain one or more types of information, including, but not limited to, voice, data, video, and audio information. The term “system” is used generically herein to describe any number of devices, computers, components, packet switch elements, packet switches, networks, computer and/or communication devices or mechanisms, or combinations thereof. The term “computer” is used generically herein to describe any number of computers, including, but not limited to personal computers, embedded processors, workstations, mainframes, etc. The term “device” is used generically herein to describe any type of mechanism, including a computer or system or component thereof (e.g., network interface card, etc.) which is directly or indirectly connected to a network, other devices, or components of the original or other device.
Many devices communicate with other devices and may want to “pace” or send traffic corresponding to one or more streams of information at a predetermined rate, which may correspond to a predetermined time interval between sending packets or groups of packets comprising a stream of information. For example, a computer connected to an asynchronous transfer mode (“ATM”) network may want to pace the rate it sends information into the network. The desired pacing rate of each information stream may be static or dynamic, and may be determined based on one or more of several factors including, but not limited to, the type of traffic, the amount of bandwidth available, a communication service employed, the tariff or cost structure for sending information through the network, and numerous other technical and/or business reasons.
Networked devices, such as a computer or workstation connected to a private or public network (which may or may not include packet switching systems), use various techniques for pacing the flow of packets of information from these networked devices. However, known prior approaches for pacing one or more streams of information have drawbacks. Some of these prior approaches require a large amount of memory and/or induce jitter or drift into the transmission of packets of information over time.